.\" -*- nroff -*"
.TH ptpd2.conf 5 "@RELEASE_DATE@" "version @VERSION_NUMBER@" "PTPd config file"
.SH NAME
ptpd2.conf \- Precision Time Protocol daemon config file

.SH CONFIGURATION FILE FORMAT
Settings in the PTPd configuration file are grouped into sections and take
the form of \fIsection:key="value"\fR variables. The configuration file can either
be formatted that way (preferred) or  in .ini file style where a series of
\fIkey="value"\fR variables is grouped into sections using \fB[\fIsection\fB]\fR headers.
Every setting listed here can also be specified
as a command line parameter \fB(\fI--section:key=value\fB)\fR. Quotation marks are optional.
\fBNOTE:\fR the configuration file must end with a newline.

.SH RELOADING CONFIGURATION
Only a small number of configuration file settings (SNMP, lock file configuration) requires a restart
of the PTPd process to take effect. All other settings can be changed while ptpd is running - configuration file
is reloaded and checked for changes when PTPd receives the SIGHUP signal. When reloading configuration,
PTPd will always attempt to test settings before applying them and once running, will never exit as
a result of configuration errors. If it does exit during config refresh, this is most likely a bug.

.SH COMMAND-LINE PRIORITY
Any setting passed as a command line parameter will always take priority over the configuration file,
so once ptpd is running, those settings cannot be changed - a warning will be logged on every
attempt to change those settings using the configuration file.

.SH CONFIGURATION SECTIONS
.B ptpengine
PTP protocol specific configuration
.TP
.B clock
Clock related settings
.TP
.B servo
Clock control PI servo configuration
.TP
.B global
Global configuration - logging, etc.
.TP
.B ntpengine
NTP control configuration
.TP
.B variables
User-defined variables

.SH USER-DEFINED VARIABLES
To allow for easier management and automated generation of configuration, PTPd supports user variables,
which can be defined in the configuration file or in command line. They are defined as \fIvariables:[name]=[value]\fR,
or if using .ini style format, in the \fI[variables]\fR section. Once defined, a variable can be referred to
in the remaining configuration settings as \fI@name@\fR, and is substituted with the value of the variable 

\fBExample\fR:

variables:instance=server15

global:status_file=/var/run/ptpd2.@instance@.status

global:log_file=/var/run/ptpd2.@instance@.status

\fBNote:\fR for the same effect, ptpd can be run from command line, such as \fI --config=/path/to/file --variables:instance=server15\fR

.SH BUILT_IN VARIABLES
PTPd includes suppport for built-in variables, automatically defined. The following variables are automatically substituted:

@pid@ - current PTPd process ID
@hostname@ - current host name


.SH CONFIGURATION TEMPLATES AND TEMPLATE FILES
As of version 2.3.1.1, ptpd enables the user to minimise the configuration effort for common scenarios, using built-in templates
and template files. A template is a named set of pre-defined settings whic are prepended before any other settings, so user can
still overwrite settings provided by the template. To use this feature, set \fIglobal:config_templates=[name],[name],...\fR in the
configuration file, or run ptpd with \fI--global:config_templates=[name],[name],...\fR. Multiple templates can be specified,
separated by comma, space or tab; they are applied in the order they are provided, so template settings override any overlapping
settings from previous templates specified. Templates can include \fIuser-defined variables\fR.

A number of \fItemplate files\fR can also be supplied with the \fIglobal:template_files\fR setting
(comma, space or tab separated lis of file paths). The template files will be processed in the order they are provided in,
so for overlapping settings, the last template applied overrides settings applied by any previous 
templates. PTPd will also try to load a default template file on startup: \fItemplates.conf\fR 
from the default data directory: \fI@prefix@/share/@PACKAGE_NAME@/templates.conf\fR

The template file is formatted in .ini style - each template is a section defined as
\fI[template-name]\fR, followed by a number of settings specified as \fIsection:setting\fR.

\fBExample\fR:

[my-template]

global:verbose_foreground=Y

ptpengine:preset=slaveonly


To see the list of available built-in templates, run ptpd with \fI-T\fR or \fI--show-templates\fR

.SH CONFIGURATION VARIABLES
.RS 0
.TP 8
\fBptpengine:interface [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Network interface to use - eth0, igb0 etc. (\fBrequired\fR). See also \fIptpengine:backup_interface\fR.
.TP 8
\fBdefault\fR
\fI[none]\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:backup_interface [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Backup network interface to use - eth0, igb0 etc. When no GM available,
slave will keep alternating between primary and secondary until a GM is found.
.TP 8
\fBdefault\fR
\fI[none]\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:preset [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fInone slaveonly masteronly masterslave \fR
.TP 8
\fBusage\fR
PTP engine preset:
.RS 12
.TP 12
\fInone\fR
Defaults, no clock class restrictions
.TP 12
\fIslaveonly\fR
Slave only (clock class 255 only)
.TP 12
\fImasteronly\fR
Master, passive when not best master (clock class 0..127)
.TP 12
\fImasterslave\fR
Full IEEE 1588 implementation: Master, slave when not best master (clock class 128..254)
.RE
.TP 8
\fBdefault\fR
\fIslaveonly\fR
.TP 8
\fBNOTE:\fR
Presets affect the following settings: \fIptpengine:slave_only\fR, \fIclock_no_adjust\fR and \fIptpengine:clock_class\fR (range and default value).
To see all preset settings, run ptpd2 \fI-H\fR (\fI--long-help\fR)

.RE
.RE
.RS 0
.TP 8
\fBptpengine:transport [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fIipv4 ethernet\fR
.TP 8
\fBusage\fR
Transport type for PTP packets. \fBNOTE:\fR Ethernet transport requires building with \fIlibpcap\fR and is not supported on Solaris as of 2.3.1,
and cannot be enabled on those systems unless ptpd is compiled with \fB--enable-experimental-options\fR.
.TP 8
\fBdefault\fR
\fIipv4\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:dot1as [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Enable IEEE 802.1AS / AVB compatibility (transportSpecific field in PTP message headers).
Requires Ethernet transport as this is the only mapping used by 802.1AS that PTP supports
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:ip_mode [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fImulticast unicast hybrid \fR
.TP 8
\fBusage\fR
IP transmission mode (requires IP transport):
.RS 12
.TP 12
\fImulticast\fR
uses multicast for all messages
.TP 12
\fIhybrid\fR
uses  multicast for sync and announce, and unicast for delay request and response
.TP 12
\fIunicast\fR
uses unicast for all transmission. When unicast mode is selected, destination IP(s) (\fIptpengine:unicast_
destinations\fR) must be configured
depending on unicast negotiation setting (\fIptpengine:unicast_negotiation\fR) and master or slave role
(see: \fIptpengine:unicast_destinations\fR)
.RE
.TP 8
\fBdefault\fR
\fImulticast\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:disabled [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Disable PTP port. Causes the PTP state machine to stay in PTP_DISABLED state indefinitely,
until it is re-enabled via configuration change or ENABLE_PORT management message.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:unicast_negotiation [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Enable unicast negotiation support using signaling messages - as used by the Telecom profile
(ITU-T G.8265.1).
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:unicast_grant_duration [\fIINT\fB: 30 .. 604800]\fR
.RS 8
.TP 8
\fBusage\fR
Duration (seconds) for which the transmission of unicast messages is granted by a master,
or requested by a slave when unicast negotiation is used (\fIptpengine:unicast_negotiation\fR).
When using PTPd with other PTP implementations, PTPd will never refuse to grant a message based
on the requested duration: it will grant for 30 seconds if requested for any less than 30 seconds,
and will grant for 7 days (604800) if requested for any longer.
.TP 8
\fBdefault\fR
\fI300\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:disable_bmca [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Disable Best Master Clock Algorithm for unicast masters. Only effective for masteronly preset -
all Announce messages will be ignored and the cock will transition directly into MASTER state
and remain an active master. This behaviour is required for Telecom profile operation.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:unicast_any_master [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
When using unicast negotiation (slave), accept PTP messages from any grandmaster.
By default, only messages from acceptable masters (\fIptpengine:unicast_destinations\fR)
are accepted, and only if transmission was granted by the GM. This setting can be used
when mixing GMs supporting G.8265.1 and manual unicast (no negotiation), or to assist
with interoperability issues where signaling messages and timing messages come from
different port identities.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:unicast_port_mask [\fIINT\fB: 0 .. 65535 (0xFFFF)]\fR
.RS 8
.TP 8
\fBusage\fR
PTP port number wildcard mask (16-bit) applied onto port identities when running unicast negotiation:
allows multiple port identities (with the same clock ID) to be accepted as coming from the same port.
This option can be used as a workaround where a node sends signaling messages and timing messages
with different port identities. \fBNOTE:\fR This can also be entered in hexadecimal notation (0xNNNN).
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:disable_udp_checksums [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Disable UDP checksum validation on UDP sockets (Linux only). Workaround for situations where a node
(like Transparent Clock) does not rewrite checksums. Enabled by default.
.TP 8
\fBdefault\fR
\fIY\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:use_libpcap [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Use libpcap for sending and receiving traffic (automatically enabled in Ethernet mode).
Requires building with libpcap - builds made with \fB--disable-pcap\fR cannot use this feature, and as of 2.3.1, Solaris systems will
not attempt to use libpcap unless compiled with \fB--enable-experimental-options\fR
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_mechanism [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fIE2E P2P DELAY_DISABLED \fR
.TP 8
\fBusage\fR
Delay detection mechanism used - use DELAY_DISABLED for syntonisation only (no synchronisation). E2E uses Delay Request messages,
P2P uses Peer Delay Request messages.
.TP 8
\fBdefault\fR
\fIE2E\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:domain [\fIINT\fB: 0 .. 127]\fR
.RS 8
.TP 8
\fBusage\fR
PTP domain number.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:any_domain [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Usability extension: if enabled, a slave-only clock will accept masters from any domain,
while preferring the configured domain, and preferring lower domain number. This option should be
used for slave-only clocks and should not be used with unicast negotiation.
\fBNOTE:\fR this behaviour is not part of the standard.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:port_number [\fIINT\fB: 1 .. 65534]\fR
.RS 8
.TP 8
\fBusage\fR
PTP port number (part of PTP Port Identity - not UDP port).
For ordinary clocks (single port), the default should be used,
but when running multiple instances to simulate a boundary clock,
The port number can be changed.
.TP 8
\fBdefault\fR
\fI1\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:port_description [\fISTRING: 64 characters max\fB]\fR
.RS 8
.TP 8
\fBusage\fR
User description of the PTP port - this value is returned in response to USER_DESCRIPTION management message and
CLOCK_DESCRIPTION management message.
.TP 8
\fBdefault\fR
\fI[ptpd]\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:slave_only [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Slave only mode (sets clock class to 255, overriding value from preset).
.TP 8
\fBdefault\fR
\fIY\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:inbound_latency [\fIINT\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Specify latency correction (nanoseconds) for incoming packets.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:outbound_latency [\fIINT\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Specify latency correction (nanoseconds) for outgoing packets.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:offset_shift [\fIINT\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Apply an arbitrary shift (nanoseconds) to offset from master when in slave state. Value can be positive or negative - useful for correcting for of antenna latencies, delay assymetry and IP stack latencies. This will not be visible in the offset from master value - only in the resulting clock correction.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:always_respect_utc_offset [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Compatibility option: In slave state, always respect UTC offset announced by best master, even if the the
 currrentUtcOffsetValid flag is announced FALSE. \fBNOTE\fR: this behaviour is not part of the standard.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:prefer_utc_offset_valid [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Compatibility extension to BMC algorithm: when enabled, BMC for both master and save clocks will prefer masters announcing currrentUtcOffsetValid as TRUE.
 \fBNOTE\fR: this behaviour is not part of the standard.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:require_utc_offset_valid [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Compatibility option: when enabled, ptpd2 will ignore Announce messages from masters announcing currentUtcOffsetValid as FALSE. \fBNOTE\fR: this behaviour is not part of the standard.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:log_announce_interval [\fIINT\fB: -4 .. 7]\fR
.RS 8
.TP 8
\fBusage\fR
PTP announce message interval in master state. When using unicast negotiation (\fIptpengine:unicast_negotiation\fR),
for slaves this is the initial (minimum) interval requested and for masters this is the minimum interval granted.
(expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.)
.TP 8
\fBdefault\fR
\fI1\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:log_announce_interval_max [\fIINT\fB: -1 .. 7]\fR
.RS 8
.TP 8
\fBusage\fR
When using unicast negtiation (\fIptpengine:unicast_negotiation\fR), this is the maximum announce
interval granted by a master, and the maximum interval a slave will attempt to request.
(expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.)
.TP 8
\fBdefault\fR
\fI5\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:announce_receipt_timeout [\fIINT\fB: 2 .. 255]\fR
.RS 8
.TP 8
\fBusage\fR
PTP announce receipt timeout announced in master state.
.TP 8
\fBdefault\fR
\fI6\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:announce_receipt_grace_period [\fIINT\fB: 0 .. 20]\fR
.RS 8
.TP 8
\fBusage\fR
PTP announce receipt timeout grace period in slave state: when announce receipt timeout occurs, disqualify current best GM,
 then wait n times announce receipt timeout before resetting. Allows for a seamless GM failover when standby GMs are slow
 to react. When set to 0, this option is not used.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:log_sync_interval [\fIINT\fB: -7 .. 7]\fR
.RS 8
.TP 8
\fBusage\fR
PTP sync message interval in master state. When using unicast negotiation (\fIptpengine:unicast_negotiation\fR),
for slaves this is the initial (minimum) interval requested and for masters this is the minimum interval granted.
	(expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.)
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:log_sync_interval_max [\fIINT\fB: -1 .. 7]\fR
.RS 8
.TP 8
\fBusage\fR
When using unicast negtiation (\fIptpengine:unicast_negotiation\fR), this is the maximum sync
interval granted by a master, and the maximum interval a slave will attempt to request.
(expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.)
.TP 8
\fBdefault\fR
\fI5\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:log_delayreq_override [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Override the Delay Request interval provided by best master.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:log_delayreq_auto [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Automatically override the Delay Request interval (with \fI ptpengine:log_delayreq_interval\fR)
if the received value is 127 (0X7F), such as in unicast messages,
unless using unicast negotiation (\fIptpengine:unicast_negotiation\fR)
.TP 8
\fBdefault\fR
\fIY\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:log_delayreq_interval_initial [\fIINT\fB: -7 .. 7]\fR
.RS 8
.TP 8
\fBusage\fR
Delay request interval used before receiving first delay response
	(expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.)
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:log_delayreq_interval [\fIINT\fB: -7 .. 7]\fR
.RS 8
.TP 8
\fBusage\fR
Minimum delay request interval announced when in master state, in slave state overrides the master interval.
 (expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.). When using unicast negotiation (\fIptpengine:unicast_negotiation\fR),
for slaves this is the initial (minimum) interval requested and for masters this is the minimum interval granted.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:log_delayreq_interval_max [\fIINT\fB: -1 .. 7]\fR
.RS 8
.TP 8
\fBusage\fR
When using unicast negtiation (\fIptpengine:unicast_negotiation\fR), this is the maximum delay request
interval granted by a master, and the maximum interval a slave will attempt to request.
 (expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.). 
.TP 8
\fBdefault\fR
\fI5\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:log_peer_delayreq_interval [\fIINT\fB: -7 .. 7]\fR
.RS 8
.TP 8
\fBusage\fR
Minimum peer delay request message interval in peer to peer delay mode
(expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.). When using unicast negotiation (\fIptpengine:unicast_negotiation\fR),
this is the initial (minimum) interval requested by a node from its peer and this is the minimum interval granted for a peer.
.TP 8
\fBdefault\fR
\fI1\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:log_peer_delayreq_interval_max [\fIINT\fB: -1 .. 7]\fR
.RS 8
.TP 8
\fBusage\fR
When using unicast negtiation (\fIptpengine:unicast_negotiation\fR), this is the maximum peer delay request
interval granted by a node, and the maximum interval a node will attempt to request from its peer.
 (expressed as log 2 i.e. -1=0.5s, 0=1s, 1=2s etc.). 
.TP 8
\fBdefault\fR
\fI5\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:foreignrecord_capacity [\fIINT\fB: 5 .. 10]\fR
.RS 8
.TP 8
\fBusage\fR
Foreign master record size (Maximum number of foreign masters).
.TP 8
\fBdefault\fR
\fI5\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:ptp_allan_variance [\fIINT\fB: 0 .. 65535]\fR
.RS 8
.TP 8
\fBusage\fR
Specify Allan variance announced in master state.
.TP 8
\fBdefault\fR
\fI28768\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:ptp_clock_accuracy [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fIACC_25NS ACC_100NS ACC_250NS ACC_1US ACC_2.5US ACC_10US ACC_25US ACC_100US ACC_250US ACC_1MS ACC_2.5MS ACC_10MS ACC_25MS ACC_100MS ACC_250MS ACC_1S ACC_10S ACC_10SPLUS ACC_UNKNOWN \fR
.TP 8
\fBusage\fR
Clock accuracy range announced in master state.
.TP 8
\fBdefault\fR
\fIACC_UNKNOWN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:utc_offset [\fIINT\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Underlying time source UTC offset announced in master state.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:utc_offset_valid [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Underlying time source UTC offset validity announced in master state.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:time_traceable [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Underlying time source time traceability announced in master state.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:frequency_traceable [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Underlying time source frequency traceability announced in master state.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:ptp_timescale [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fIPTP ARB \fR
.TP 8
\fBusage\fR
Time scale announced in master state (with ARB, UTC properties are ignored by slaves). When clock class is set to 13 (application specific), this value is ignored and ARB is used.
.TP 8
\fBdefault\fR
\fIARB\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:ptp_timesource [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fIATOMIC_CLOCK GPS TERRESTRIAL_RADIO PTP NTP HAND_SET OTHER INTERNAL_OSCILLATOR \fR
.TP 8
\fBusage\fR
Time source announced in master state.
.TP 8
\fBdefault\fR
\fIINTERNAL_OSCILLATOR\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:clock_class [\fIINT\fB: 0 .. 255]\fR
.RS 8
.TP 8
\fBusage\fR
Clock class - announced in master state. Always 255 for slave-only.
Minimum, maximum and default values are controlled by presets.
If set to 13 (application specific time source), announced time scale is always set to ARB.
This setting controls the states a PTP port can be in. If below 128, port will only be in MASTER or PASSIVE states (master only). If above 127, port will be in MASTER or SLAVE states.
.TP 8
\fBdefault\fR
\fI255\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:priority1 [\fIINT\fB: 0 .. 248]\fR
.RS 8
.TP 8
\fBusage\fR
Priority 1 announced in master state,used for Best Master
	 Clock selection.
.TP 8
\fBdefault\fR
\fI128\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:priority2 [\fIINT\fB: 0 .. 248]\fR
.RS 8
.TP 8
\fBusage\fR
Priority 2 announced in master state, used for Best Master
	 Clock selection.
.TP 8
\fBdefault\fR
\fI128\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:max_listen [\fIINT\fB: min: 1 ]\fR
.RS 8
.TP 8
\fBusage\fR
Number of consecutive protocol resets to LISTENING before full network reset.
.TP 8
\fBdefault\fR
\fI5\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:unicast_destinations [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
An IPv4 address or list of IPv4 addresses to be used as unicast destinations.
When unicast negotiation (\fIptpengine:unicast_negotiation\fR) is enabled, setting this
is mandatory for slaves as they must be aware of which GMs to request messages from.
When unicast negotiation is disabled, setting this is mandatory for GMs, as they must
deliver messages to a pre-configured group of slaves.
.TP 8
\fBdefault\fR
\fI[none]\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:unicast_domains [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Specify PTP domain number for each configured unicast destination (\fIptpengine:unicast_destinations\fR).
This is only used by slave-only clocks using multiple unicast destinations to allow for each master
to be in a separate domain, such as with Telecom Profile. The number of entries should match the number
of unicast destinations, otherwise unconfigured domains or domains set to 0 are set to domain configured in \fIptpengine:domain\fR.
The format is a comma, tab or space-separated list of 8-bit unsigned integers (0 .. 255).
.TP 8
\fBdefault\fR
\fI[none]\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:unicast_local_preference [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Specify a local preference for each configured unicast destination (\fIptpengine:unicast_destinations\fR).
This is only used by slave-only clocks using multiple unicast destinations to allow for each master's
BMC selection to be influenced locally by the slave, such as with Telecom Profile. The number of entries should match the number
of unicast destinations, otherwise unconfigured preference is set to 255 (lowest), so that the unconfigurest entries do not
pre-empt the configured entries. The format is a comma, tab or space-separated list of 8-bit unsigned integers (0 .. 255).
.TP 8
\fBdefault\fR
\fI[none]\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:unicast_peer_destination [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
When using IP unicast mode (\fIptpengine:ip_mode=unicast\fr) and Peer to Peer delay mechanism
(\fIptpengine:delay_mechanism=P2P\fR), a peer unicast destination must be configured to request
the peer delay from. Format is a single unicast IPv4 address.
.TP 8
\fBdefault\fR
\fI[none]\fR


.RE
.RE
.RS 0
.TP 8
\fBptpengine:management_enable [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Enable handling of PTP management messages. Only GET messages are processed by default.
See \fIptpengine:management_set_enable\fR.
.TP 8
\fBdefault\fR
\fIY\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:management_set_enable [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Accept SET and COMMAND management messages.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:igmp_refresh [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Send explicit IGMP joins between engine resets and periodically
	 in master state.
.TP 8
\fBdefault\fR
\fIY\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:master_igmp_refresh_interval [\fIINT\fB: 0 .. 255]\fR
.RS 8
.TP 8
\fBusage\fR
Periodic IGMP join interval (seconds) in master state when running
IPv4 multicast: when set below 10 or when ptpengine:igmp_refresh
is disabled, this setting has no effect.
.TP 8
\fBdefault\fR
\fI60\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:multicast_ttl [\fIINT\fB: 1 .. 64]\fR
.RS 8
.TP 8
\fBusage\fR
Multicast time to live for multicast PTP packets (ignored and set to 1
for peer to peer messages).
.TP 8
\fBdefault\fR
\fI64\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:ip_dscp [\fIINT\fB: 0 .. 63]\fR
.RS 8
.TP 8
\fBusage\fR
DiffServ CodepPoint for packet prioritisation (decimal). When set to zero, 
this option is not used. Use 46 for Expedited Forwarding (0x2e).
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_stat_filter_enable [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Enable statistical filter for Sync messages
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_stat_filter_type [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fInone mean min max absmin absmax median \fR
.TP 8
\fBusage\fR
Type of filter used for Sync message filtering:
.RS 12
.TP 12
\fInone\fR
no filtering - pass-through
.TP 12
\fImean\fR
mean (average) - smooth results but influenced by outliers
.TP 12
\fImin\fR
minimal value - useful for high packet delay variation ("lucky packets")
.TP 12
\fImax\fR
maximal value - useful for testing worst case scenarios
.TP 12
\fIabsmin\fR
absolute minimum - value closest to zero. Also useful for test purposes.
.TP 12
\fIabsmax\fR
absolute maximun value farthest away from zero
.TP 12
\fImedian\fR
median (middle value) - more robust than mean, not influenced by outliers
.RE
.TP 8
\fBdefault\fR
\fImin\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_stat_filter_window [\fIINT\fB: 3 .. 128]\fR
.RS 8
.TP 8
\fBusage\fR
Number of samples used for the Sync statistical filter
.TP 8
\fBdefault\fR
\fI4\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_stat_filter_window_type [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fIsliding interval\fR
.TP 8
\fBusage\fR
Sampling window behaviour for the Sync statistical filter:
.RS 12
.TP 12
\fIsliding\fR
sliding window - a value is output every time the filter runs, which can result in duplicates
.TP 12
\fIinterval\fR
only output a value every n-th sample (full window) - independent sampling periods
.RE
.TP 8
\fBdefault\fR
\fIsliding\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_stat_filter_enable [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Enable statistical filter for Delay messages
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_stat_filter_type [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fInone mean min max absmin absmax median \fR
.TP 8
\fBusage\fR
Type of filter used for Delay message filtering:
.RS 12
.TP 12
\fInone\fR
no filtering - pass-through
.TP 12
\fImean\fR
mean (average) - smooth results but influenced by outliers
.TP 12
\fImin\fR
minimal value - useful for high packet delay variation ("lucky packets")
.TP 12
\fImax\fR
maximal value - useful for testing worst case scenarios
.TP 12
\fIabsmin\fR
absolute minimum - value closest to zero. Also useful for test purposes.
.TP 12
\fIabsmax\fR
absolute maximun value farthest away from zero
.TP 12
\fImedian\fR
median (middle value) - more robust than mean, not influenced by outliers
.RE
.TP 8
\fBdefault\fR
\fImin\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_stat_filter_window [\fIINT\fB: 3 .. 128]\fR
.RS 8
.TP 8
\fBusage\fR
Number of samples used for the Delay statistical filter
.TP 8
\fBdefault\fR
\fI4\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_stat_filter_window_type [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fIsliding interval\fR
.TP 8
\fBusage\fR
Sampling window behaviour for the Delay statistical filter:
.RS 12
.TP 12
\fIsliding\fR
sliding window - a value is output every time the filter runs, which can result in duplicates
.TP 12
\fIinterval\fR
only output a value every n-th sample (full window) - independent sampling periods
.RE
.TP 8
\fBdefault\fR
\fIsliding\fR


.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_outlier_filter_enable [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Enable outlier filter for the Delay Response component in slave state
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_outlier_filter_action [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fIdiscard filter \fR
.TP 8
\fBusage\fR
Delay Response outlier filter action. If set to 'filter', outliers are
	 replaced with moving average.
.TP 8
\fBdefault\fR
\fIdiscard\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_outlier_filter_capacity [\fIINT\fB: 4 .. 60]\fR
.RS 8
.TP 8
\fBusage\fR
Number of samples in the Delay Response outlier filter buffer
.TP 8
\fBdefault\fR
\fI20\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_outlier_filter_threshold [\fIFLOAT\fB: 0.001000 .. 1000.000000]\fR
.RS 8
.TP 8
\fBusage\fR
Delay Response outlier filter threshold: multiplier for Peirce's maximum
	 standard deviation. When set below 1.0, filter is tighter, when set above
	 1.0, filter is looser than standard Peirce's test.
.TP 8
\fBdefault\fR
\fI1.000000\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_outlier_filter_always_filter [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Always run the Delay Response outlier filter, even if clock is being slewed at maximum rate
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_outlier_filter_autotune_enable [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Enable automatic threshold control for Delay Response outlier filter.
.TP 8
\fBdefault\fR
\fIY\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_outlier_filter_autotune_minpercent [\fIINT\fB: 0 .. 99]\fR
.RS 8
.TP 8
\fBusage\fR
Delay Response outlier filter autotune low watermark - minimum percentage
of discarded samples in the update period before filter is tightened
by the autotune step value
.TP 8
\fBdefault\fR
\fI20\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_outlier_filter_autotune_maxpercent [\fIINT\fB: 1 .. 100]\fR
.RS 8
.TP 8
\fBusage\fR
Delay Response outlier filter autotune high watermark - maximum percentage
of discarded samples in the update period before filter is loosened
by the autotune step value
.TP 8
\fBdefault\fR
\fI95\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_outlier_filter_autotune_step [\fIFLOAT\fB: 0.010000 .. 10.000000]\fR
.RS 8
.TP 8
\fBusage\fR
The value the Delay Response outlier filter threshold is increased
or decreased by when auto-tuning
.TP 8
\fBdefault\fR
\fI0.100000\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_outlier_filter_autotune_minthreshold [\fIFLOAT\fB: 0.010000 .. 10.000000]\fR
.RS 8
.TP 8
\fBusage\fR
Minimum Delay Response filter threshold value used when auto-tuning
.TP 8
\fBdefault\fR
\fI0.100000\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_outlier_filter_autotune_maxthreshold [\fIFLOAT\fB: 0.010000 .. 10.000000]\fR
.RS 8
.TP 8
\fBusage\fR
Maximum Delay Response filter threshold value used when auto-tuning
.TP 8
\fBdefault\fR
\fI5.000000\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_outlier_weight [\fIFLOAT\fB: 0.010000 .. 2.000000]\fR
.RS 8
.TP 8
\fBusage\fR
Delay Response outlier weight: if an outlier is detected, determines
	 the amount of its deviation from mean that is used to build the standard
	 deviation statistics and influence further outlier detection.
	 When set to 1.0, the outlier is used as is.
.TP 8
\fBdefault\fR
\fI1.000000\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_outlier_filter_stepdetect_enable [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Enable Delay Response filter step detection (delaySM) to block when certain level exceeded
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_outlier_filter_stepdetect_threshold [\fIINT\fB: 50000 .. 999999999]\fR
.RS 8
.TP 8
\fBusage\fR
Delay step detection threshold. Step detection is performed only
when delaySM is below this threshold (nanoseconds)
.TP 8
\fBdefault\fR
\fI1000000\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_outlier_filter_stepdetect_level [\fIINT\fB: 50000 .. 999999999]\fR
.RS 8
.TP 8
\fBusage\fR
Delay step level. When step detection enabled and operational, delaySM above this level
(nanoseconds) is considered a clock step and updates are paused
.TP 8
\fBdefault\fR
\fI500000\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_outlier_filter_stepdetect_credit [\fIINT\fB: 50 .. 1000]\fR
.RS 8
.TP 8
\fBusage\fR
Initial credit (number of samples) the Delay step detection filter can block for.
When credit is exhausted, filter stops blocking. Credit is gradually restored
(see \fIptpengine:delay_outlier_filter_stepdetect_credit_increment\fR)
.TP 8
\fBdefault\fR
\fI200\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:delay_outlier_filter_stepdetect_credit_increment [\fIINT\fB: 1 .. 100]\fR
.RS 8
.TP 8
\fBusage\fR
Amount of credit for the Delay step detection filter restored every full sample window
.TP 8
\fBdefault\fR
\fI10\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_outlier_filter_enable [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Enable outlier filter for the Sync component in slave state.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_outlier_filter_action [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fIdiscard filter \fR
.TP 8
\fBusage\fR
Sync outlier filter action. If set to 'filter', outliers are replaced
	 with moving average.
.TP 8
\fBdefault\fR
\fIdiscard\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_outlier_filter_capacity [\fIINT\fB: 4 .. 60]\fR
.RS 8
.TP 8
\fBusage\fR
Number of samples in the Sync outlier filter buffer.
.TP 8
\fBdefault\fR
\fI20\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_outlier_filter_threshold [\fIFLOAT\fB: 0.001000 .. 1000.000000]\fR
.RS 8
.TP 8
\fBusage\fR
Sync outlier filter threshold: multiplier for the Peirce's maximum standard
	 deviation. When set below 1.0, filter is tighter, when set above 1.0,
	 filter is looser than standard Peirce's test.
.TP 8
\fBdefault\fR
\fI1.000000\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_outlier_filter_always_filter [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Always run the Sync outlier filter, even if clock is being slewed at maximum rate
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_outlier_filter_autotune_enable [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Enable automatic threshold control for Sync outlier filter.
.TP 8
\fBdefault\fR
\fIY\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_outlier_filter_autotune_minpercent [\fIINT\fB: 0 .. 99]\fR
.RS 8
.TP 8
\fBusage\fR
Sync outlier filter autotune low watermark - minimum percentage
of discarded samples in the update period before filter is tightened
by the autotune step value
.TP 8
\fBdefault\fR
\fI20\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_outlier_filter_autotune_maxpercent [\fIINT\fB: 1 .. 100]\fR
.RS 8
.TP 8
\fBusage\fR
Sync outlier filter autotune high watermark - maximum percentage
of discarded samples in the update period before filter is loosened
by the autotune step value
.TP 8
\fBdefault\fR
\fI95\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_outlier_filter_autotune_step [\fIFLOAT\fB: 0.010000 .. 10.000000]\fR
.RS 8
.TP 8
\fBusage\fR
The value the Sync outlier filter threshold is increased
or decreased by when auto-tuning
.TP 8
\fBdefault\fR
\fI0.100000\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_outlier_filter_autotune_minthreshold [\fIFLOAT\fB: 0.010000 .. 10.000000]\fR
.RS 8
.TP 8
\fBusage\fR
Minimum Sync filter threshold value used when auto-tuning
.TP 8
\fBdefault\fR
\fI0.100000\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_outlier_filter_autotune_maxthreshold [\fIFLOAT\fB: 0.010000 .. 10.000000]\fR
.RS 8
.TP 8
\fBusage\fR
Maximum Sync filter threshold value used when auto-tuning
.TP 8
\fBdefault\fR
\fI5.000000\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_outlier_weight [\fIFLOAT\fB: 0.010000 .. 2.000000]\fR
.RS 8
.TP 8
\fBusage\fR
Sync outlier weight: if an outlier is detected, this value determines the
 amount of its deviation from mean that is used to build the standard 
 deviation statistics and influence further outlier detection.
 When set to 1.0, the outlier is used as is
.TP 8
\fBdefault\fR
\fI1.000000\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_outlier_filter_stepdetect_enable [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Enable Sync filter step detection (delayMS) to block when certain level exceeded
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_outlier_filter_stepdetect_threshold [\fIINT\fB: 50000 .. 999999999]\fR
.RS 8
.TP 8
\fBusage\fR
Sync step detection threshold. Step detection is performed only
when delayMS is below this threshold (nanoseconds)
.TP 8
\fBdefault\fR
\fI1000000\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_outlier_filter_stepdetect_level [\fIINT\fB: 50000 .. 999999999]\fR
.RS 8
.TP 8
\fBusage\fR
Sync step level. When step detection enabled and operational, delayMS above this level
(nanoseconds) is considered a clock step and updates are paused
.TP 8
\fBdefault\fR
\fI500000\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_outlier_filter_stepdetect_credit [\fIINT\fB: 50 .. 1000]\fR
.RS 8
.TP 8
\fBusage\fR
Initial credit (number of samples) the Sync step detection filter can block for.
When credit is exhausted, filter stops blocking. Credit is gradually restored
(see \fIptpengine:sync_outlier_filter_stepdetect_credit_increment\fR)
.TP 8
\fBdefault\fR
\fI200\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_outlier_filter_stepdetect_credit_increment [\fIINT\fB: 1 .. 100]\fR
.RS 8
.TP 8
\fBusage\fR
Amount of credit for the Sync step detection filter restored every full sample window
.TP 8
\fBdefault\fR
\fI10\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sync_sequence_checking [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
When enabled, Sync messages will only be accepted if sequence ID is increasing.
\fBnote:\fR This can cause the slave to temporarily lock up if GM restarts before announce timeout,
so this is limited to 50 consecutive sequence errors. Alternatively, \fIptpengine:clock_update_timeout\fR
can be used to reset the slave beforehand.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:clock_update_timeout [\fIINT\fB: 0 .. 3600]\fR
.RS 8
.TP 8
\fBusage\fR
If set to non-zero, time (seconds) before slave is reset back into PTP_LISTENING, if thetre
were no clock updates. This is useful for situations where slave is in SLAVE state
(receiving Announce) but is not receiving or not accepting Sync messages.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:calibration_delay [\fIINT\fB: 0 .. 300]\fR
.RS 8
.TP 8
\fBusage\fR
Delay between moving to slave state and enabling clock updates (seconds).
This allows mean path delay to stabilise before starting clock updates.
Activated when going into slave state and during slave's GM failover.
0 - not used.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:idle_timeout [\fIINT\fB: 10 .. 3600]\fR
.RS 8
.TP 8
\fBusage\fR
PTP idle timeout (seconds): if PTPd is in SLAVE state and there have been no clock
updates for this amout of time, PTPd releases clock control.\n
.TP 8
\fBdefault\fR
\f60\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:offset_alarm_threshold [\fIINT\fB: 0 .. 999999999]\fR
.RS 8
.TP 8
\fBusage\fR
PTP Slave Offset from Master alarm threshold (nanoseconds) - absolute value. When set to non-zero, an alarm is raised
when PTP slave's offset from master crosses this value. The alarm is logged, indicated in the status file, and SNMP
traps are sent if SNMP is enabled. Similar notifications are created when offset returns within the threshold.
When zet to 0, offset is not checked against the threshold.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:panic_mode [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Enable panic mode: when offset from master is above 1 second, stop updating
the clock for a period of time and then step the clock if offset remains
above 1 second.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:panic_mode_duration [\fIINT\fB: 1 .. 60]\fR
.RS 8
.TP 8
\fBusage\fR
Duration (minutes) of the panic mode period (no clock updates) when offset
above 1 second detected.
.TP 8
\fBdefault\fR
\fI2\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:panic_mode_release_clock [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
When entering panic mode, release clock control while panic mode lasts.
If not set, PTP will hold clock control during panic mode.
If set together with ntpengine:* configured, this will fail over to NTP.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:panic_mode_exit_threshold [\fIINT\fB: 0 .. 999999999]\fR
.RS 8
.TP 8
\fBusage\fR
Do not exit panic mode until offset drops below this value (nanoseconds).
0 = not used.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:pid_as_clock_identity [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Use PTPd's process ID as the middle part of the PTP clock ID - useful for running multiple instances.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:ntp_failover [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Fail over to NTP when PTP time sync not available - requires
ntpengine:enabled, but does not require the rest of NTP configuration:
will warn instead of failing over if cannot control ntpd.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:ntp_failover_timeout [\fIINT\fB: 0 .. 1800]\fR
.RS 8
.TP 8
\fBusage\fR
NTP failover timeout in seconds: time between PTP slave going into
LISTENING state, and failing over to NTP. 0 = fail over immediately.
This setting controls the time provider election hold time.
.TP 8
\fBdefault\fR
\fI60\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:prefer_ntp [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Prefer NTP time synchronisation. Only use PTP when NTP not available.
Could be used when NTP runs with a local GPS receiver or another hardware reference.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:panic_mode_ntp [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Deprecated as of 2.3.1, but still supported: see \fIptppengine:panic_mode_release_clock\fR.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:sigusr2_clears_counters [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Clear counters after dumping all counter values on SIGUSR2.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:timing_acl_permit [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Permit access control list for timing and signaling messages. Format is a series of 
network prefixes and/or IP addresses separated by commas, spaces, tabs or semicolons. 
Accepted format is CIDR notation (a.b.c.d/mm), single IP address (a.b.c.d),
or full network/mask (a.b.c.d/m.m.m.m). Shortcuts can be used: 172.16/12
is expanded to 172.16.0.0/12; 192.168/255.255 is expanded to 
192.168.0.0/255.255.0.0, etc. The match is performed
on the source IP address of the incoming messages. IP access lists are
only supported when using the IP transport.
.TP 8
\fBdefault\fR
\fI[none]\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:timing_acl_deny [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Deny access control list for timing and signaling messages. Format is a series of 
network prefixes and/or IP addresses separated by commas, spaces, tabs or semicolons. 
Accepted format is CIDR notation (a.b.c.d/mm), single IP address (a.b.c.d),
or full network/mask (a.b.c.d/m.m.m.m). Shortcuts can be used: 172.16/12
is expanded to 172.16.0.0/12; 192.168/255.255 is expanded to 
192.168.0.0/255.255.0.0, etc. The match is performed
on the source IP address of the incoming messages. IP access lists are
only supported when using the IP transport.
.TP 8
\fBdefault\fR
\fI[none]\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:management_acl_permit [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Permit access control list for management messages. Format is a series of 
network prefixes and/or IP addresses separated by commas, spaces, tabs or semicolons. 
Accepted format is CIDR notation (a.b.c.d/mm), single IP address (a.b.c.d),
or full network/mask (a.b.c.d/m.m.m.m). Shortcuts can be used: 172.16/12
is expanded to 172.16.0.0/12; 192.168/255.255 is expanded to 
192.168.0.0/255.255.0.0, etc. The match is performed
on the source IP address of the incoming messages. IP access lists are
only supported when using the IP transport.
.TP 8
\fBdefault\fR
\fI[none]\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:management_acl_deny [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Deny access control list for management messages. Format is a series of 
network prefixes and/or IP addresses separated by commas, spaces, tabs or semicolons. 
Accepted format is CIDR notation (a.b.c.d/mm), single IP address (a.b.c.d),
or full network/mask (a.b.c.d/m.m.m.m). Shortcuts can be used: 172.16/12
is expanded to 172.16.0.0/12; 192.168/255.255 is expanded to 
192.168.0.0/255.255.0.0, etc. The match is performed
on the source IP address of the incoming messages. IP access lists are
only supported when using the IP transport.
.TP 8
\fBdefault\fR
\fI[none]\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:timing_acl_order [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fIpermit-deny deny-permit \fR
.TP 8
\fBusage\fR
Order in which permit and deny access lists are evaluated for timing
and signaling messages, the evaluation process is the same as for Apache httpd. \fBSee:
\fIhttp://httpd.apache.org/docs/current/mod/mod_access_compat.html#order\fR
.TP 8
\fBdefault\fR
\fIdeny-permit\fR

.RE
.RE
.RS 0
.TP 8
\fBptpengine:management_acl_order [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fIpermit-deny deny-permit \fR
.TP 8
\fBusage\fR
Order in which permit and deny access lists are evaluated for management
messages, the evaluation process is the same as for Apache httpd. \fBSee:
\fIhttp://httpd.apache.org/docs/current/mod/mod_access_compat.html#order\fR
.TP 8
\fBdefault\fR
\fIdeny-permit\fR

.RE
.RE
.RS 0
.TP 8
\fBclock:no_adjust [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Do not adjust the clock.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBclock:no_reset [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Do not reset the clock - only slew.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBclock:step_startup_force [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Force clock step on first sync after startup regardless of offset and 
\fIclock:no_reset\fR
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBclock:step_startup [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Step clock on startup only if offset >= 1 second, ignoring
panic mode and \fIclock:no_reset\fR
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBclock:set_rtc_on_step [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Attempt setting the RTC when stepping clock (Linux only - FreeBSD does 
this for us. \fBWARNING:\fR this will always set the RTC to OS clock time,
regardless of time zones, so this assumes that RTC runs in UTC or otherwise
in the same timescale as PTP. True at least on most single-boot x86 Linux systems.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBclock:drift_handling [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fIreset preserve file \fR
.TP 8
\fBusage\fR
Observed drift handling method between servo restarts:
.RS 12
.TP 12
\fIreset\fR
set to zero (not recommended)
.TP 12
\fIpreserve\fR
use kernel value
.TP 12
\fIfile\fR
load/save to drift file on startup/shutdown, use kernel value inbetween.
To specify drift file, use the \fBclock:drift_file\fR setting.
.RE
.TP 8
\fBdefault\fR
\fIpreserve\fR

.RE
.RE
.RS 0
.TP 8
\fBclock:drift_file [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Specify drift file
.TP 8
\fBdefault\fR
\fI/etc/ptpd2_kernelclock.drift\fR

.RE
.RE
.RS 0
.TP 8
\fBclock:leap_seconds_file [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Specify leap second file location (up to date version can be downloaded from:
http://www.ietf.org/timezones/data/leap-seconds.list). When configured,
PTP master will use data from this file to announce leap flags and UTC offset,
overriding OS information, and PTP slave will use data from this file as well as
information supplied by the GM. If configured, this file is always reloaded
on configuration reload (SIGHUP), reloaded on clock step and reloaded after
a leap second event to ensure the information is up to date. As of ptpd 2.3.1,
the file is bundled with ptpd and is installed into
(prefix)/share/ptpd/leap-seconds.list.ddMMMyyyy where ddMMMyyyy
is the leap seconds file expiry date.
.TP 8
\fBdefault\fR
\fI[none]\fR

.RE
.RE
.RS 0
.TP 8
\fBclock:leap_second_pause_period [\fIINT\fB: 5 .. 600]\fR
.RS 8
.TP 8
\fBusage\fR
Time (seconds) before and after midnight that clock updates should be
suspended for during a leap second event. The total duration
of the pause is twice the configured duration. Clock updates are suspended
when there is a leap second event pending and time to midnight is less than
or equal to this value and resumed no earlier than this value after midnight.
Clock updates are resumed in a controlled manner - after a control message,
such as PTP announce. This ensures that the updated UTC offset is received
before any further clock updates.
.TP 8
\fBdefault\fR
\fI5\fR

.RE
.RE
.RS 0
.TP 8
\fBclock:leap_second_notice_period [\fIINT\fB: 3600 .. 86400]\fR
.RS 8
.TP 8
\fBusage\fR
Time (seconds) before midnight that PTPd starts announcing the leap second
if it's running as master. The IEEE 1588 standard suggests 12 hours notice
and this is the default, but it may be changed to allow more flexibility.
.TP 8
\fBdefault\fR
\fI43200\fR

.RE
.RE
.RS 0
.TP 8
\fBclock:leap_second_handling [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fIaccept ignore step smear\fR
.TP 8
\fBusage\fR
Clock sync behaviour during leap second events:
.RS 12
.TP 12
\fIaccept\fR
Inform OS kernel about the leap second and let the kernel insert or delete the leap second
.TP 12
\fIignore\fR
Do not inform the kernel - this ends with a +/-1-second offset which is then slewed back down
.TP 12
\fIstep\fR
Do not inform the kernel and step the clock immediately after the leap second event
.TP 12
\fIsmear\fR
Gradually introduce an extra offset over a period of time before the leap second event,
which accumulates to +/-1 second (see \fIclock:leap_second_smear_period\fR). Once the clock
stabilises, this results in a clock frequency shift which is taken off after the event.
Once the leap second event is over, the extra offset is also removed and time is back in
line with master time.
.RE
.TP 8
\fBdefault\fR
\fIaccept\fR

.RE
.RE
.RS 0
.TP 8
\fBclock:leap_second_smear_period [\fIINT\fB: 3600 .. 86400]\fR
.RS 8
.TP 8
\fBusage\fR
When \fIclock:leap_second_handling\fR is set to \fIsmear\fR, this setting
defines the period (in seconds) before the leap second event, over which
the leap second offset is gradually added. Example: when set to 24 hours (86400),
an extra +/-11.5 microseconds is added every second (11.5 ppm clock frequency
offset).
.TP 8
\fBdefault\fR
\fI86400\fR


.RE
.RE
.RS 0
.TP 8
\fBclock:max_offset_ppm [\fIINT\fB: 500 .. 1000]\fR
.RS 8
.TP 8
\fBusage\fR
Maximum absolute frequency shift which can be applied to the clock servo
	 when slewing the clock. Expressed in parts per million (1 ppm = shift of
	 1 us per second. Values above 512 will use the tick duration correction
	 to allow even faster slewing. Default maximum is 512 without using tick.
.TP 8
\fBdefault\fR
\fI500\fR

.RE
.RE
.RS 0
.TP 8
\fBservo:delayfilter_stiffness [\fIINT\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Mean Path Delay filter stiffness.
.TP 8
\fBdefault\fR
\fI6\fR

.RE
.RE
.RS 0
.TP 8
\fBservo:kp [\fIFLOAT\fB: min: 0.000001 ]\fR
.RS 8
.TP 8
\fBusage\fR
Clock servo PI controller proportional component gain (kP).
.TP 8
\fBdefault\fR
\fI0.100000\fR

.RE
.RE
.RS 0
.TP 8
\fBservo:ki [\fIFLOAT\fB: min: 0.000001 ]\fR
.RS 8
.TP 8
\fBusage\fR
Clock servo PI controller integral component gain (kI).
.TP 8
\fBdefault\fR
\fI0.001000\fR

.RE
.RE
.RS 0
.TP 8
\fBservo:dt_method [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fInone constant measured \fR
.TP 8
\fBusage\fR
How servo update interval (delta t) is calculated:
.RS 12
.TP 12
\fInone\fR
servo not corrected for update interval (dt always 1),
.TP 12
\fIconstant\fR
constant value (target servo update rate) - sync interval for PTP,
.TP 12
\fImeasured\fR
servo measures how often it's updated and uses this interval.
.RE
.TP 8
\fBdefault\fR
\fIconstant\fR

.RE
.RE
.RS 0
.TP 8
\fBservo:dt_max [\fIFLOAT\fB: 1.500000 .. 100.000000]\fR
.RS 8
.TP 8
\fBusage\fR
Maximum servo update interval (delta t) when using measured servo update interval
(\fIservo:dt_method\fR = \fBmeasured\fR), specified as sync interval multiplier
.TP 8
\fBdefault\fR
\fI5.000000\fR

.RE
.RE
.RS 0
.TP 8
\fBservo:stability_detection [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Enable clock synchronisation servo stability detection
(based on standard deviation of the observed drift value) - drift will be saved to drift file / cached when considered stable,
also clock stability status will be logged.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBservo:stability_threshold [\fIFLOAT\fB: 1.000000 .. 10000.000000]\fR
.RS 8
.TP 8
\fBusage\fR
Specify the observed drift standard deviation threshold in parts per billion (ppb) - if stanard deviation is within the threshold, servo
is considered stable.
.TP 8
\fBdefault\fR
\fI5.000000\fR

.RE
.RE
.RS 0
.TP 8
\fBservo:stability_period [\fIINT\fB: 1 .. 100]\fR
.RS 8
.TP 8
\fBusage\fR
Specify for how many statistics update intervals the observed drift
standard deviation has to stay within threshold to be considered stable.
.TP 8
\fBdefault\fR
\fI3\fR

.RE
.RE
.RS 0
.TP 8
\fBservo:stability_timeout [\fIINT\fB: 1 .. 60]\fR
.RS 8
.TP 8
\fBusage\fR
Specify after how many minutes without stabilisation servo is considered
unstable. Assists with logging servo stability information and
allows to preserve observed drift if servo cannot stabilise.
.TP 8
\fBdefault\fR
\fI10\fR

.RE
.RE
.RS 0
.TP 8
\fBservo:max_delay [\fIINT\fB: 0 .. 999999999]\fR
.RS 8
.TP 8
\fBusage\fR
Do not accept master to slave delay (delayMS - from Sync message) or slave to master delay (delaySM - from Delay Response message) 
if greater than this value (nanoseconds). 0 = not used.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBservo:max_delay_max_rejected [\fIINT\fB: min: 0 ]\fR
.RS 8
.TP 8
\fBusage\fR
Maximum number of consecutive rejected delay measurements exceeding the maxDelay threshold (\fIservo:max_delay\fR),
before slave is reset. 0 = not checked.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBservo:max_delay_stable_only [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
If \fBservo:max_delay\fR is set, perform the check only if clock servo has stabilised.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBservo:max_offset [\fIINT\fB: 0 .. 999999999]\fR
.RS 8
.TP 8
\fBusage\fR
Do not reset the clock if offset from master is greater than this value (nanoseconds). 0 = not used.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:config_templates [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Comma, space or tab-separated list of template names to be applied to the configuration
(see \fICONFIGURATION TEMPLATES AND TEMPLATE FILES\fR section). Templates are applied in the order
they are specified, so any overlapping settings from one template are overridden with settings
from the following template(s). PTPd provides some built-in templates - see the templates section
above; to see the built-in templates, run ptpd with \fI-T\fR or \fI--show-templates\fR.
.TP 8
\fBdefault\fR
\fI[none]\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:template_files [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Comma, space or tab-separated list of template file paths to be loaded
(see \fICONFIGURATION TEMPLATES AND TEMPLATE FILES\fR section). Template
files are also loaded in the order they are provided, so templates in one file
can be extended by templates in the next file(s); any overlapping settings are overridden
by following files. PTPd will not exit when one or more template files cannot be opened.
PTPd will always try to load \fI@prefix@/share/@PACKAGE_NAME@/templates.conf\fR on startup.
.TP 8
\fBdefault\fR
\fI[none]\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:enable_alarms [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Enable support for alarm and event notifications (see \fBALARMS\fR section). Alarms
enable self-diagnosing of common error conditions and events such as master change
or time properties change. When SNMP support is enabled (\fBglobal:enable_snmp\fR)
and SNMP trap support is enabled (\fBglobal:enable_snmp_traps\fR), alarms trigger
SNMP traps.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:alarm_timeout [\fIINT\fB: 0 .. 3600]\fR
.RS 8
.TP 8
\fBusage\fR
Mininmum alarm age (seconds) - minimal time between alarm set and clear notifications.
The condition can clear while alarm lasts, but notification (log or SNMP) will only
be triggered after the timeout. This option prevents from alarms flapping (repeated
set and clear notifications).
.TP 8
\fBdefault\fR
\fI30\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:alarm_initial_delay [\fIINT\fB: 0 .. 3600]\fR
.RS 8
.TP 8
\fBusage\fR
Delay the start of alarm processing (seconds) after ptpd startup. This option
allows to avoid unnecessary alarms before PTPd starts synchronising, which should happen
after a few seconds, but could take longer in cases where multicast has to converge upstream,
or when there is a mismatch in message intervals and unicast signaling has to negotiate them down
(or up) to acceptable values. This also prevents from alerting on offset from master too soon
after startup (see \fBptpengine:offset_alarm_threshold\fR) - delay can be increased to cover
the initial sync period, however this is not recommended as an offset alarm after startup
can indicate a slave cold start.
.TP 8
\fBdefault\fR
\fI10\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:enable_snmp [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Enable SNMP agent (if compiled with PTPD_SNMP).
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:enable_snmp_traps [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Enable reporting of alarms and events as SNMP traps. Requires PTPd to be compiled with PTPD_SNMP,
and requires alarms to be enabled (\fBglobal:enable_alarms\fR)
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:use_syslog [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Send log messages to syslog. Disabling this sends all messages to stdout (or speficied log file).
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:lock_file [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Lock file location
.TP 8
\fBdefault\fR
\fI[none]\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:auto_lockfile [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Use mode specific and interface specific lock file (overrides \fBglobal:lock_file\fR).
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:lock_directory [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Lock file directory: used with automatic mode-specific lock files,
also used when no lock file is specified. When lock file
is specified, it's expected to be an absolute path.
.TP 8
\fBdefault\fR
\fI/var/run\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:ignore_lock [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Skip lock file checking and locking.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:quality_file [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
File used to record data about sync packets. Enables recording when set.
.TP 8
\fBdefault\fR
\fI[none]\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:quality_file_max_size [\fIINT\fB: min: 0 ]\fR
.RS 8
.TP 8
\fBusage\fR
Maximum sync packet record file size (in kB) - file will be truncated
if size exceeds the limit. 0 - no limit.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:quality_file_max_files [\fIINT\fB: 0 .. 100]\fR
.RS 8
.TP 8
\fBusage\fR
Enable log rotation of the sync packet record file up to n files.
0 - do not rotate.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:quality_file_truncate [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Truncate the sync packet record file every time it is (re) opened:
startup and SIGHUP.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:status_file [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
File used to log ptpd2 status information.
.TP 8
\fBdefault\fR
\fI/var/run/ptpd2.status\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:log_status [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Enable / disable writing status information to file.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:status_update_interval [\fIINT\fB: 1 .. 30]\fR
.RS 8
.TP 8
\fBusage\fR
Status file update interval in seconds.
.TP 8
\fBdefault\fR
\fI1\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:log_file [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Specify log file path (event log). Setting this enables logging to file.
.TP 8
\fBdefault\fR
\fI[none]\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:log_file_max_size [\fIINT\fB: min: 0 ]\fR
.RS 8
.TP 8
\fBusage\fR
Maximum log file size (in kB) - log file will be truncated if size exceeds
the limit. 0 - no limit.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:log_file_max_files [\fIINT\fB: 0 .. 100]\fR
.RS 8
.TP 8
\fBusage\fR
Enable log rotation of the sync packet record file up to n files.
0 - do not rotate.

.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:log_file_truncate [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Truncate the log file every time it is (re) opened: startup and SIGHUP.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:log_level [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fILOG_ERR LOG_WARNING LOG_NOTICE LOG_INFO LOG_ALL \fR
.TP 8
\fBusage\fR
Specify log level (only messages at this priority or higer will be logged).
The minimal level is LOG_ERR. LOG_ALL enables debug output if compiled with
RUNTIME_DEBUG.
.TP 8
\fBdefault\fR
\fILOG_ALL\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:statistics_file [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Specify statistics log file path. Setting this enables logging of
statistics, but can be overriden with \fBglobal:log_statistics\fR.
.TP 8
\fBdefault\fR
\fI[none]\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:statistics_log_interval [\fIINT\fB: min: 0 ]\fR
.RS 8
.TP 8
\fBusage\fR
Log timing statistics every n seconds for Sync and Delay messages (0 - log all).
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:statistics_file_max_size [\fIINT\fB: min: 0 ]\fR
.RS 8
.TP 8
\fBusage\fR
Maximum statistics log file size (in kB) - log file will be truncated if size exceeds the limit. 0 - no limit.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:statistics_file_max_files [\fIINT\fB: 0 .. 100]\fR
.RS 8
.TP 8
\fBusage\fR
Enable log rotation of the statistics file up to n files. 0 - do not rotate.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:statistics_file_truncate [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Truncate the statistics file every time it is (re) opened: startup and SIGHUP.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:dump_packets [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Dump the contents of every PTP packet.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:verbose_foreground [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Run in foreground with statistics and all messages logged to stdout. Overrides log file and statistics file settings and disables syslog.

.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:foreground [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Run in foreground - ignored when global:verbose_foreground is set.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:log_statistics [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Log timing statistics for every PTP packet received. Output is in CSV format and field headers
are always printed when starting or refreshing the statistics log.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:statistics_timestamp_format [\fISELECT\fB]\fR
.RS 8
.TP 8
\fBoptions\fR
\fIdatetime unix both \fR
.TP 8
\fBusage\fR
Timestamp format used when logging timing statistics (when \fBglobal:log_statistics\fR is enabled):
.RS 12
.TP 12
\fIdatetime\fR
Formatted date and time: \fBYYYY-MM-DD hh:mm:ss.uuuuuu\fR
.TP 12
\fIunix\fR
Unix timestamp with nanoseconds: \fBs.ns\fR
.TP 12
\fIboth\fR
Formatted date and time followed by unix timestamp (adds one extra field  to the log)
.RE
.TP 8
\fBdefault\fR
\fIdatetime\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:periodic_updates [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Log a status update every time statistics are updated (\fIglobal:statistics_update_interval\fR).
This update is written to the main log target. Status updates are logged even if ptpd is configured
without support for statistics.
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:cpuaffinity_cpucore [\fIINT\fB: -1 .. 255]\fR
.RS 8
.TP 8
\fBusage\fR
Bind ptpd2 process to a selected CPU core number. 0 = first CPU core, etc. -1 = do not bind to a single core.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:statistics_update_interval [\fIINT\fB: 1 .. 60]\fR
.RS 8
.TP 8
\fBusage\fR
Clock synchronisation statistics update interval in seconds. Also controls how often periodic status information
is logged (when using \fIglobal:statistics_update_interval\fR).
.TP 8
\fBdefault\fR
\fI30\fR

.RE
.RE
.RS 0
.TP 8
\fBglobal:timingdomain_election_delay [\fIINT\fB: 0 .. 3600 ]\fR
.RS 8
.TP 8
\fBusage\fR
Delay (seconds) before releasing a time service (NTP or PTP)
and electing a new one to control a clock. 0 = elect immediately
.TP 8
\fBdefault\fR
\fI15\fR

.RE
.RE
.RS 0
.TP 8
\fBntpengine:enabled [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Enable NTPd integration
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBntpengine:control_enabled [\fIBOOLEAN\fB]\fR
.RS 8
.TP 8
\fBusage\fR
Enable control over local NTPd daemon
.TP 8
\fBdefault\fR
\fIN\fR

.RE
.RE
.RS 0
.TP 8
\fBntpengine:check_interval [\fIINT\fB: 5 .. 600]\fR
.RS 8
.TP 8
\fBusage\fR
NTP control check interval in seconds
.TP 8
\fBdefault\fR
\fI15\fR

.RE
.RE
.RS 0
.TP 8
\fBntpengine:key_id [\fIINT\fB: 0 .. 65535]\fR
.RS 8
.TP 8
\fBusage\fR
NTP key number - must be configured as a trusted control key in ntp.conf,
and be non-zero for the ntpengine:control_enabled setting to take effect.
.TP 8
\fBdefault\fR
\fI0\fR

.RE
.RE
.RS 0
.TP 8
\fBntpengine:key [\fISTRING\fB]\fR
.RS 8
.TP 8
\fBusage\fR
NTP key (plain text, max. 20 characters) - must match the key configured in
ntpd's keys file, and must be non-zero for the ntpengine:control_enabled
setting to take effect.
.TP 8
\fBdefault\fR
\fI[none]\fR

.RE
.RE

.SH BUGS
Configuration file support has only been introduced in version 2.3. There may still be some inconsistencies
in the way some settings are parsed and while order should not make any difference, for some complex behaviours
it may still be the case.

Please report any bugs using the bug tracker on the SourceForge page:
http://sourceforge.net/projects/ptpd/

.SH SEE ALSO
.xR ptpd2 8
ptpd2(8)

.SH AUTHORS
.PP
Steven Kreuzer <skreuzer@freebsd.org> 
.PP
Gael Mace <gael_mace@users.sourceforge.net>
.PP
George Neville-Neil <gnn@freebsd.org>
.PP
Wojciech Owczarek <wojciech@owczarek.co.uk>
.PP
Alexandre Van Kempen

\fBptpd2.conf(5)\fR man page first written by Wojciech Owczarek for ptpd 2.3.0 in November 2013
